// Przyczenie pliku fileA na kocu pliku fileB

#import <Foundation/Foundation.h>

int main (int argc, char *argv[])
{
    NSAutoreleasePool      * pool = [[NSAutoreleasePool alloc] init];
    NSFileHandle           *inFile, *outFile;
    NSData                 *buffer;

    // Otwarcie pliku fileA do odczytu

    inFile = [NSFileHandle fileHandleForReadingAtPath: @"fileA"];

    if (inFile == nil) {
        NSLog (@"Otwarcie pliku fileA do odczytu nie powiodo si ");
        return 1;
    }

    // Otwarcie pliku fileB do aktualizacji

    outFile = [NSFileHandle fileHandleForWritingAtPath: @"fileB"];

    if (outFile == nil) {
        NSLog (@"Otwarcie pliku fileB do zapisu nie powiodo si ");
        return 2;
    }

    // Przejcie na koniec pliku outFile

    [outFile seekToEndOfFile];

    // Odczyt pliku inFile i zapis jego zawartoci w pliku outFile

    buffer = [inFile readDataToEndOfFile];
    [outFile writeData: buffer];

    // Zamknicie obu plikw

    [inFile closeFile];
    [outFile closeFile];

    // Weryfikacja treci

    NSLog(@"%@", [NSString stringWithContentsOfFile: @"fileB" 
        encoding: NSUTF8StringEncoding error: nil]);

    [pool drain];
    return 0;
}